package com.example.blog_system_ssm.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

//加盐加密
public class SecurityUtil {
    //该方法实现加密
    public static String encrypt(String password){
        //生成随机盐值,32位
        String salt= UUID.randomUUID().toString().replace("-","");
        //最终密码=md5(salt+password),32位
        String finalPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //正好返回一个64位的字段存储在数据库（salt+finalPassword）
        //用这个字段来验证用户密码是否正确
        return salt+finalPassword;
    }

    //密码验证
    public static boolean decrypt(String password, String finalPassword){
        // 非空效验
        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(finalPassword)) {
            return false;
        }
        //有效值校验
        if (finalPassword.length() != 64) {
            return false;
        }
        String salt=finalPassword.substring(0,32);
        //生成待认证的最终密码
        String securityPassword =DigestUtils.md5DigestAsHex((salt+password).getBytes());
        //使用盐值+最终的密码与数据库中的finalPassword比较
        return (salt+securityPassword).equals(finalPassword);
    }
}
